#ifndef CASSIOPEIACOMPONENT_H
#define CASSIOPEIACOMPONENT_H

#include "common.h"

enum DLL CCState
{
	NoActionNecessary = 0, 
	NotReady = -1,
	Successful = 1
};

class DLL CassiopeiaComponent
{
public:
	typedef void (*ACTIVECHANGEDPROC)(CassiopeiaComponent* sender, bool active);

	CassiopeiaComponent();
	virtual ~CassiopeiaComponent();
	virtual CCState Activate();
	virtual CCState Deactivate();
	bool IsActive();
	void ToggleActiveState();
	void ActiveChanged(ACTIVECHANGEDPROC ptr);
protected:
	virtual void OnActiveChanged();

	bool active;	
	ACTIVECHANGEDPROC activeChangedPtr;
};

#endif
